import csv

def read_vectors_from_csv(file_path):
    """
    从 CSV 文件中读取二维向量数据，返回一个向量组。
    :param file_path: CSV 文件路径
    :return: 向量组（列表），每个元素是一个元组 (x, y)
    """
    vectors = []
    try:
        with open(file_path, 'r', encoding='utf-8') as file:  # 指定编码为 utf-8
            csv_reader = csv.reader(file)
            for row in csv_reader:
                if len(row) != 2:
                    raise ValueError("CSV 文件格式错误，每行必须包含两个数值。")
                try:
                    x = float(row[0])
                    y = float(row[1])
                    vectors.append((x, y))
                except ValueError:
                    raise ValueError("CSV 文件中包含非数值数据。")
    except FileNotFoundError:
        raise FileNotFoundError(f"文件 {file_path} 不存在。")
    except UnicodeDecodeError:
        raise UnicodeDecodeError("无法解码文件内容，请检查文件编码格式是否正确。")
    return vectors

def calculate_resultant_vector(vectors):
    """
    计算向量组的合位移向量。
    :param vectors: 向量组（列表），每个元素是一个元组 (x, y)
    :return: 合位移向量（元组，包含 x 和 y 分量）
    """
    resultant_x = 0.0
    resultant_y = 0.0
    for vector in vectors:
        resultant_x += vector[0]
        resultant_y += vector[1]
    return (resultant_x, resultant_y)


def main():
    file_path = input("请输入 CSV 文件路径：")
    file_path = file_path.strip('"')
    try:
        vectors = read_vectors_from_csv(file_path)
        if not vectors:
            print("CSV 文件为空，没有数据可处理。")
            return
        resultant_vector = calculate_resultant_vector(vectors)
        print(f"合位移向量为：({resultant_vector[0]}, {resultant_vector[1]})")
    except Exception as e:
        print(f"发生错误：{str(e)}")

def example():                     #示例函数
    vectors=[(2.0,3.0),(-1.0,4.0)]
    print(calculate_resultant_vector(vectors))


if __name__ == "__main__":
    example()                      #仅供示例解释
    
    main()